/* * * Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved. * * This file is part of jAPS software. * jAPS is a free software; * you can redistribute it and/or modify it * under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2. * * See the file License for the specific language governing permissions * and limitations under the License * * * * Copyright 2005 AgileTec s.r.l. (http://www.agiletec.it) All rights reserved. * */ package com.agiletec.aps.system.common.entity.parse; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.StringReader; import javax.xml.XMLConstants; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.jdom.Document; import org.jdom.input.SAXBuilder; import com.agiletec.aps.system.ApsSystemUtils; import com.agiletec.aps.system.exception.ApsSystemException; /** * Abstract Dom class parser of Attribute support Objects. * @author E.Santoboni */ public abstract class AbstractAttributeSupportObjectDOM { protected void validate(String xmlText, String definitionPath) throws ApsSystemException { SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); InputStream schemaIs = null; InputStream xmlIs = null; try { schemaIs = this.getClass().getResourceAsStream(this.getSchemaFileName()); Source schemaSource = new StreamSource(schemaIs); Schema schema = factory.newSchema(schemaSource); Validator validator = schema.newValidator(); xmlIs = new ByteArrayInputStream(xmlText.getBytes("UTF-8")); Source source = new StreamSource(xmlIs); validator.validate(source); ApsSystemUtils.getLogger().info("Valid definition : " + definitionPath); } catch (Throwable t) { String message = "Error validating definition : " + definitionPath; ApsSystemUtils.logThrowable(t, this, "this", message); throw new ApsSystemException(message, t); } finally { try { if (null != schemaIs) schemaIs.close(); if (null != xmlIs) xmlIs.close(); } catch (IOException e) { ApsSystemUtils.logThrowable(e, this, "this"); } } } protected Document decodeDOM(String xmlText) throws ApsSystemException { Document doc = null; SAXBuilder builder = new SAXBuilder(); builder.setValidation(false); StringReader reader = new StringReader(xmlText); try { doc = builder.build(reader); } catch (Exception ex) { throw new ApsSystemException("Error while parsing: " + ex.getMessage(), ex); } return doc; } protected abstract String getSchemaFileName(); }